package com.ticket.sass.admin.dto.output.order;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @author ywb
 * @date 2024-05-11 10:41
 */
@Data
@ApiModel
public class DispatchInfoOutput {
    @ApiModelProperty(value = "配送位置，如：5号厅门口、6号厅4排5座")
    private String place;
    
    @ApiModelProperty(value = "配送方式：1 配送到厅口，2 配送入座，3前台自提")
    private Short mode;
    
    @ApiModelProperty(value = "配送状态：0 未配送，1已配送")
    private Short status;
    
    public DispatchInfoOutput() {
    }
    
    public DispatchInfoOutput(String place, Short mode, Short status) {
        this.place = place;
        this.mode = mode;
        this.status = status;
    }
    
    
    /**
     * 获取配送信息的描述，使用系统特定的换行符。
     * @return 配送信息的字符串描述。
     */
    public String getInfo() {
        // 根据配送方式的枚举值，获取对应的文本描述
        String modeDescription = getModeDescription();
        // 根据配送状态的枚举值，获取对应的文本描述
        String statusDescription = getStatusDescription();
        
        // 使用系统特定的换行符构建配送信息字符串
        return
              "配送 " + modeDescription + System.lineSeparator()
            + "位置 " + place + System.lineSeparator()
            + "状态 " + statusDescription;
    }
    
    /**
     * 根据配送方式的枚举值获取文本描述。
     * @return 配送方式的文本描述。
     */
    private String getModeDescription() {
        switch (mode) {
            case 1:
                return "配送到厅口";
            case 2:
                return "配送入座";
            case 3:
                return "前台自提";
            default:
                return "未知方式";
        }
    }
    
    /**
     * 根据配送状态的枚举值获取文本描述。
     * @return 配送状态的文本描述。
     */
    private String getStatusDescription() {
        switch (status) {
            case 0:
                return "未配送";
            case 1:
                return "已配送";
            default:
                return "未知状态";
        }
    }
}
